{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "#竞赛的评价指标为logloss，但LinearSVC不支持概率\n",
    "#所以在这个例子中我们用正确率accuracy_score作为模型选择的度量\n",
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "from matplotlib import pyplot as plt\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pregnants</th>\n",
       "      <th>Plasma_glucose_concentration</th>\n",
       "      <th>blood_pressure</th>\n",
       "      <th>Triceps_skin_fold_thickness</th>\n",
       "      <th>serum_insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>Diabetes_pedigree_function</th>\n",
       "      <th>Age</th>\n",
       "      <th>Target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6</td>\n",
       "      <td>148</td>\n",
       "      <td>72</td>\n",
       "      <td>35</td>\n",
       "      <td>0</td>\n",
       "      <td>33.6</td>\n",
       "      <td>0.627</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>85</td>\n",
       "      <td>66</td>\n",
       "      <td>29</td>\n",
       "      <td>0</td>\n",
       "      <td>26.6</td>\n",
       "      <td>0.351</td>\n",
       "      <td>31</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8</td>\n",
       "      <td>183</td>\n",
       "      <td>64</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>23.3</td>\n",
       "      <td>0.672</td>\n",
       "      <td>32</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>89</td>\n",
       "      <td>66</td>\n",
       "      <td>23</td>\n",
       "      <td>94</td>\n",
       "      <td>28.1</td>\n",
       "      <td>0.167</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>137</td>\n",
       "      <td>40</td>\n",
       "      <td>35</td>\n",
       "      <td>168</td>\n",
       "      <td>43.1</td>\n",
       "      <td>2.288</td>\n",
       "      <td>33</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   pregnants  Plasma_glucose_concentration  blood_pressure  \\\n",
       "0          6                           148              72   \n",
       "1          1                            85              66   \n",
       "2          8                           183              64   \n",
       "3          1                            89              66   \n",
       "4          0                           137              40   \n",
       "\n",
       "   Triceps_skin_fold_thickness  serum_insulin   BMI  \\\n",
       "0                           35              0  33.6   \n",
       "1                           29              0  26.6   \n",
       "2                            0              0  23.3   \n",
       "3                           23             94  28.1   \n",
       "4                           35            168  43.1   \n",
       "\n",
       "   Diabetes_pedigree_function  Age  Target  \n",
       "0                       0.627   50       1  \n",
       "1                       0.351   31       0  \n",
       "2                       0.672   32       1  \n",
       "3                       0.167   21       0  \n",
       "4                       2.288   33       1  "
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train = pd.read_csv(\"E:\\\\Jupyter\\\\SVM\\\\pima-indians-diabetes.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将类别字符串变成数字\n",
    "# drop ids and get labels\n",
    "y_train = train['Target']   #形式为Class_x\n",
    "X_train = train.drop([ \"Target\"], axis=1)\n",
    "\n",
    "#保存特征名字以备后用（可视化）\n",
    "feat_names = X_train.columns \n",
    "\n",
    "#sklearn的学习器大多之一稀疏数据输入，模型训练会快很多\n",
    "from scipy.sparse import csr_matrix\n",
    "X_train = csr_matrix(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(614, 8)\n"
     ]
    }
   ],
   "source": [
    "print (X_train_part.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.68359375\n",
      "{'C': 0.1}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\svm\\base.py:922: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  \"the number of iterations.\", ConvergenceWarning)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.svm import LinearSVC\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "Cs =[0.001, 0.01,0.1,1,10,100,1000]\n",
    "param_grid={'C':Cs}\n",
    "svc=LinearSVC(penalty='l2',loss='hinge')\n",
    "grid = GridSearchCV(svc,param_grid,cv=5,n_jobs=4)\n",
    "grid.fit(X_train,y_train)\n",
    "print(grid.best_score_)\n",
    "print(grid.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score='raise-deprecating',\n",
       "       estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,\n",
       "  decision_function_shape='ovr', degree=3, gamma='auto_deprecated',\n",
       "  kernel='rbf', max_iter=-1, probability=False, random_state=None,\n",
       "  shrinking=True, tol=0.001, verbose=False),\n",
       "       fit_params=None, iid='warn', n_jobs=4,\n",
       "       param_grid={'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000], 'gamma': [0.001, 0.001, 0.01, 0.1, 1]},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
       "       scoring=None, verbose=0)"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.svm import SVC\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "Cs=[0.001,0.01,0.1,1,10,100,1000]\n",
    "gammas=[0.001,0.001,0.01,0.1,1]\n",
    "param_grid={'C':Cs, 'gamma':gammas}\n",
    "grid=GridSearchCV(SVC(kernel='rbf'),param_grid,cv=5,n_jobs=4)\n",
    "grid.fit(X_train,y_train)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7356770833333334\n",
      "{'C': 1, 'gamma': 0.001}\n"
     ]
    }
   ],
   "source": [
    "print(grid.best_score_)\n",
    "print(grid.best_params_)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "\n",
    "#color = sns.color_palette()\n",
    "\n",
    "\n",
    "test_means=grid.cv_results_['mean_test_score']\n",
    "test_stds=grid.cv_results_['std_test_score']\n",
    "n_Cs=len(Cs)\n",
    "number_gamms=len(gammas)\n",
    "test_scores=np.array(test_means).reshape(n_Cs,number_gamms)\n",
    "test_stds=np.array(test_stds).reshape(n_Cs,number_gamms)\n",
    "x_axis=np.log10(Cs)\n",
    "for i,value in enumerate(gammas):\n",
    "    plt.plot(x_axis,test_scores[:,i], label=gammas[i])\n",
    "\n",
    "plt.legend()\n",
    "plt.xlabel('log(C)')\n",
    "plt.ylabel('accuary')\n",
    "plt.savefig('SVMGridSearchCV.png')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
